/*
 * AlunoDAOJPA.java
 * 
 * Projeto: Kruskal - SRAC
 * LEDS - Laboratório de Engenharia e Desenvolvimento de Software
 * IFES - Instituto Federal do Espírito Santo - Campus Serra.
 */
package srac.controleatividades.cgd;

import java.util.List;
import javax.persistence.Query;
import srac.controleatividades.cdp.Aluno;
import srac.controleatividades.cdp.StatusSubmissao;
import srac.controleatividades.cdp.Usuario;
import util.utilitarioPersistencia.DAOJPA;

public class AlunoDAOJPA extends DAOJPA<Aluno> implements AlunoDAO {

    @Override
    public Aluno obter(Usuario u) {
        Query query = entityManager.createQuery("Select a from Aluno a where a.usuario.id = ?1");
        query.setParameter(1, u.getId());
        List<Aluno> listaAluno = query.getResultList();
        return listaAluno.get(0);
    }

    @Override
    public List<Aluno> obterAlunosComAtividadesSubmetidas() {
        Query query = entityManager.createQuery("Select a from Aluno a where a.statusSubmissao = ?1 or a.statusSubmissao = ?2 or a.statusSubmissao = ?3");
        query.setParameter(1, StatusSubmissao.EM_ANALISE);
        query.setParameter(2, StatusSubmissao.ATIVIDADES_CONFERIDAS);
        query.setParameter(3, StatusSubmissao.ATIVIDADES_CONFERIDAS_INAPTO);
        return query.getResultList();
    }

    @Override
    public List<Aluno> obterAlunosValidacao() {
        Query query = entityManager.createQuery("Select a from Aluno a where a.statusSubmissao = ?1");
        query.setParameter(1, StatusSubmissao.ATIVIDADES_CONFERIDAS);
        return query.getResultList();
    }
    
    @Override
    public List<Aluno> obterAlunoPorMatricula(String matricula) {
        Query query = entityManager.createQuery("Select a from Aluno a where a.matricula = ?1");
        query.setParameter(1, matricula);
        return query.getResultList();
    }

    @Override
    public List<Aluno> obterAluno(String nome) {
        Query query = entityManager.createQuery("Select a from Aluno a where a.nome = ?1");
        query.setParameter(1, nome);
        return query.getResultList();
    }

    @Override
    public Aluno obterAluno(Usuario u) {
        Query query = entityManager.createQuery("Select a from Aluno a where a.usuario = ?1");
        query.setParameter(1, u);
        List<Aluno> l = query.getResultList();
        if(!l.isEmpty())
        {
            return l.get(0);
        }
        return null;
    }
}